// pages/cart/cart.js
// 获取全局对象
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    list: [],
    result: [],
    price: ""
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getList();
  },

  // 获取购物车列表
  getList() {
    let url = "/cart/list";
    app.$http.get(url, {}, true).then(res => {
      // console.log("购物车列表", res);
      this.setData({
        list: res.list
      })
      if (res.code === 666 && this.data.result.length) {
        this.totalMoney();
      }
    })
  },

  // 复选框
  onChange(event) {
    this.setData({
      result: event.detail,
    });
    // 计算价格
    this.totalMoney();
  },

  // 封装计算价格方法
  totalMoney() {
    let sum = 0;
    this.data.result.forEach(item1 => {
      let obj = this.data.list.find(item2 => {
        return item2._id === item1;
      })
      sum += obj.price * obj.buyNum;
    })
    // console.log(sum);
    this.setData({
      price: sum / 100
    });
  },

  // 全选
  allChoose(event) {
    console.log(event);
    // 高亮颜色
    if (this.data.list.length === this.data.result.length) {
      this.setData({
        result: []
      })
    } else {
      // 平常颜色
      let result = this.data.list.map(item => {
        return item._id
      })
      this.setData({ result })
    }
    // 计算价格
    this.totalMoney();
  },

  // 确认删除
  confirm(event) {
    wx.showModal({
      title: '删除',
      content: '删除内容不可恢复，是否删除？',
      success: (res) => {
        if (res.confirm) {
          this.del(event)
        } else if (res.cancel) {
          console.log('用户点击取消')
        }
      }
    })
  },

  // 删除商品
  del(event) {
    let index = event.target.dataset.index;
    let _id = event.target.dataset.id;
    let url = "/cart/del";
    app.$http.post(url, { _id }, true).then(res => {
      console.log("删除商品", res);
      let list = this.data.list;
      // 1、删除
      list.splice(index, 1);
      this.setData({ list })

      // 2、查找勾选是否存在
      let result = [];
      list.forEach(item1 => {
        let res = this.data.result.find(item2 => {
          return item1._id === item2;
        })
        if (res) {
          result.push(res)
        }
      })
      this.setData({ result })
    })
  },

  // 修改商品数量
  updateNum(event) {
    let data = {
      _id: event.target.dataset.id,
      buyNum: event.detail
    }
    let url = "/cart/updateNum";
    app.$http.post(url, data, true).then(res => {
      // console.log("修改商品数量", res);
    })
    this.getList();
  },

  // 结算
  account() {
    if (!this.data.result.length) {
      return false;
    }
    let data = {
      totalMoney: this.data.price,
      goodsId: this.data.result
    }
    // 1、请求
    let url = "/preOrder/add";
    app.$http.post(url, data, true).then(res => {
      // console.log("结算", res);
      // 2、要传递的参数
      let goodsList = [];
      this.data.result.forEach(item1 => {
        let goods = this.data.list.find(item2 => {
          return item2._id === item1;
        })
        goodsList.push(goods);
      })
      let orderData = {
        totalMoney: this.data.price,
        goodsList
      }
      // 3、转为JSON格式
      let orderDataStr = JSON.stringify(orderData);
      // 4、跳转传递参数
      wx.navigateTo({
        url: `/pages/confirmOrder/confirmOrder?orderDataStr=${orderDataStr}`
      })
    })
  },

  // 阻止事件冒泡
  stop(event) { },

  // 删除所有商品
  // delAll() {
  //   let url = "/cart/del";
  //   this.data.list.forEach((item, index) => {
  //     let data = {
  //       _id: item._id
  //     }
  //     if (this.data.list.length - 2 === index) {
  //       return false;
  //     }
  //     app.$http.post(url, data).then(res => {
  //       console.log("删除", res);
  //     })
  //   });
  // },
})